home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / gcc / objam01.lha / objam / ReadMe < prev   
Encoding:
Text File  |  1995-02-18  |  11.9 KB  |  305 lines

  1.                ****************************************
  2.  
  3.                       The ObjectiveAmiga package
  4.  
  5.                 An Objective-C environment for AmigaOS
  6.  
  7.                               Release 0.1
  8.  
  9.                   Copyleft 1994-1995 by Stefan Zeiger
  10.  
  11.                ****************************************
  12.  
  13. License
  14. *******
  15.  
  16.    ObjectiveAmiga is based on the GNU Objective C runtime system which
  17. comes with GNU CC 2.5.8. ObjectiveAmiga is subject to the same license
  18. conditions as the GNU CC 2.5.8 Objective C runtime:
  19.  
  20.    ObjectiveAmiga  is free software; you can redistribute it and/or
  21. modify it under  the  terms  of  the GNU General Public License as
  22. published by the Free Software Foundation; either version 2, or (at
  23. your option) any later version.
  24.  
  25.    ObjectiveAmiga  is  distributed  in  the  hope that it will be
  26. useful, but WITHOUT  ANY WARRANTY; without even the implied warranty of
  27. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  28. General Public License for more details.
  29.  
  30.    You  should  have  received a copy of the GNU General Public License
  31. along with ObjectiveAmiga; see the file COPYING.  If not, write to the
  32. Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  33.  
  34.    As  a special exception, if you link this library with files
  35. compiled with GCC  to produce an executable, this does not cause the
  36. resulting executable to be covered by the GNU General Public License.
  37. This exception does not however invalidate  any  other reasons why the
  38. executable file might be covered by the GNU General Public License.
  39.  
  40. Introduction
  41. ************
  42.  
  43.    ObjectiveAmiga  is a runtime system and class collection for the
  44. Objective C  language  as implemented by gcc 2.5.8.  Note that you
  45. first have to install gcc  2.5.8  (maybe  some  earlier  versions  will
  46. work,  too) in order to use ObjectiveAmiga.   If  you  should  get
  47. crashes from `ld', try installing an `ld' from  gcc 2.6.0 or later or
  48. even better install a full 2.6.0 (or later) system and  simply  add
  49. the  2.5.8  compilers directory.  The supplied Makefile will choose gcc
  50. 2.5.8, no matter which versions are installed.  See below for
  51. installation and deinstallation instructions.
  52.  
  53.    ObjectiveAmiga consists of 5 parts:
  54.  
  55.    * The runtime system (almost completely functional):
  56.  
  57.      A  standard  Objective-C  runtime  system based on libobjc.a as
  58.      supplied with gcc 2.5.8 but with some AmigaOS specific
  59.      modifications.  My runtime system  also  tries  to  be  compatible
  60.      as far as possible (I can't test it...)  with  the  original  gcc,
  61.      with  the  NeXTSTEP  [2] and  in some points with the Stepstone
  62.      [3] runtime system. Note that not the whole runtime system is
  63.      indeed contained in `libbjc.a'. More and more parts are being
  64.      moved over into the shared runtime library `objc.library'.
  65.  
  66.    * The shared runtime library (under development; functional):
  67.  
  68.      Traditionally Objective C programs carry a huge overhead in their
  69.      code, due to the big runtime system. ObjectiveAmiga tries to
  70.      minimize this problem by moving as many as possible parts from the
  71.      linker library into a shared library which is placed into `libs:'
  72.      instead of being linked to all executables directly.
  73.  
  74.    * The basics library (very rudimentary):
  75.  
  76.      A  class  library  loosely  based  on  the  basic classes of
  77.      Stepstone's ICpak101  as described in [3].  This library might
  78.      depend in some places on  my  runtime system, but it doesn't make
  79.      direct use of AmigaOS.  Thus it should be portable, at least to
  80.      some degree.
  81.  
  82.    * The AppKit (prepared for implementation):
  83.  
  84.      This is currently a linker library because the runtime doesn't yet
  85.      support dynamic loading of classes. This kit is modeled after the
  86.      NeXTSTEP AppKit classes with some AmigaOS specific modifications.
  87.  
  88.    * The AmigaOS support library (under development; functional):
  89.  
  90.      This  library tries to encapsulate some AmigaOS functions in
  91.      Objective C classes.
  92.  
  93.    Note that of the above only the runtime system is complete. All other
  94. parts are currently very rudimentary and by no means complete.
  95.  
  96. Installation
  97. ************
  98.  
  99.    *Installation:*
  100.  
  101.   1. Make sure that you have installed gcc 2.6.0+ and the gcc 2.5.8
  102.      executables.
  103.  
  104.   2. CD to the directory where you found this file.
  105.  
  106.   3. Check the paths in the Makefile.
  107.  
  108.   4. Create the runtime system with 'make install'.
  109.  
  110.    *Deinstallation:*
  111.  
  112.   1. CD to the directory where you found this file.
  113.  
  114.   2. Type 'make remove'.
  115.  
  116.    *Updating:*
  117.  
  118.    In order to upate with a new release of ObjectiveAmiga, simply
  119. deinstall the old release (see above) and then install the new release
  120. from scratch (see above). The directory structures of new releases
  121. could change and include files `<objc/...>' are constantly being
  122. removed one by one when their functionality is taken over into the
  123. runtime library. Thus it would be unwise to install a new release over
  124. an existing one.
  125.  
  126. Major changes to libobjc.a compared to the gcc 2.5.8 version
  127. ************************************************************
  128.  
  129.    * Changed defintion of BOOL, YES and NO to be compatible with the
  130.      AmigaOS defintions for boolean values.
  131.  
  132.    * Solved naming conflicts with Objective C and BOOPSI.  Especially
  133.      changed `Class' to `OCClass' for compatibility with BOOPSI.
  134.      `Class' can still be used as long as `<intuition/classes.h>' is
  135.      not included.
  136.  
  137.    * Added an NXZone implementation based on memory pools. Note that if
  138.      you define AMIGAOS_39 in `runtime/Makefile' (this is done by
  139.      default), `objc.library' requires OS3.0. Undefine AMIGAOS_39 in
  140.      order to produce an `objc.library' which runs on OS2.04 and above.
  141.  
  142.    * Added an NXAtom implementation. Currently the strings are searched
  143.      directly in the atom list which is not quite fast. I will change
  144.      this to hash table searching whin I find the time for it.
  145.  
  146.    * Added many new methods to Object, mainly in order to be more
  147.      compatible with NeXTSTEP. Added category  `Object
  148.      (StepstoneArchiving)' for Stepstone-type object archiving
  149.      functions. This makes sense because there is currently no
  150.      NXStreams implementation, thus archiving will be used mainly with
  151.      files (which is easier with the Stepstone methods).
  152.  
  153.    * Since the function names of GNU and NeXTSTEP implementations differ
  154.      although many functions do the same things, I have added
  155.      definitions for various NeXTSTEP functions. These will be changed
  156.      to inline functions when I find the time to do that.
  157.  
  158.    * Removed GCC source and IN_GCC dependencies.  Changed local
  159.      includes to global includes. The Objective C runtime can now be
  160.      compiled independently from GCC.
  161.  
  162. GNU Objective C release notes for gcc 2.4
  163. *****************************************
  164.  
  165.    *Note:* This chapter contains the release notes for the original GCC
  166. Objective C runtime which comes with GCC 2.5.8.
  167.  
  168. GNU Release notes
  169. =================
  170.  
  171.    Since gcc 2.3.3 the Objective C as part of gcc has changed a lot.
  172. This document is to explain what has been done, and a little about how
  173. specific features differ from other implementations.  The runtime has
  174. been completely rewritten.  The earlier runtime had several severe bugs
  175. and was rather incomplete.  The compiler has had several new features
  176. added as well.
  177.  
  178.    This is not documentation for Objective C, it is usable to someone
  179. who knows Objective C from somewhere else.
  180.  
  181. Runtime API functions
  182. =====================
  183.  
  184.    The runtime is moddeled after the NeXT Objective C runtime.  That is,
  185. most functions have semanthics as it is known from the NeXT.  The
  186. names, however, have changed.  All runtime API functions have names of
  187. lowercase letters and and underscores as opposed to the `traditional'
  188. mixed case names.
  189.  
  190.    The runtime api functions are not documented as of now.  Someone
  191. offered to write it, and did it, but we were not allowed to use it by
  192. his university (Very sad story).  We have started writing the
  193. documentation over again.  This will be announced appropriate places
  194. when it becomes avilable.
  195.  
  196. Protocols
  197. =========
  198.  
  199.    Protocols are now fully supported. The semanthics is exactly as on
  200. the NeXT.  There is a flag to specify how protocols should be
  201. typechecked when adopted to classes.  The normal typechecker requires
  202. that all methods in a given protocol must be implemented in the class
  203. that adopts it - it is not enough to inherit them.  The flag
  204. `-Wno-protocol' causes it to allow inherited methods, while
  205. `-Wprotocols' is the default which requires them defined.
  206.  
  207. +initialize
  208. ===========
  209.  
  210.    This method, if defined, is called before any other instance or class
  211. methods of that particular class.  This method is not inherited, and is
  212. thus not called as initializer for a subclass that doesn't define it
  213. itself.  Thus, each +initialize method is called exactly once (or never
  214. if no methods of that particular class is never called).  Besides this,
  215. it is allowed to have several +initialize methods, one for each
  216. category.  The order in which these (multiple methods) are called is
  217. not well defined.  I am not completely certain what the semathics of
  218. this method is for other implementations, but this is how it works for
  219. GNU Objective C.
  220.  
  221. Passivation/Activation/Typedstreams
  222. ===================================
  223.  
  224.    This is supported in the style of NeXT TypedStream's.  Consult the
  225. headerfile Typedstreams.h for api functions.  I (Kresten) have
  226. rewritten it in Objective C, but this implementation is not part of
  227. 2.4, it is available from the GNU Objective C prerelease archive.
  228.  
  229.    There is one semathic difference worth noting concerning objects
  230. stored with objc_write_object_reference (aka NXWriteObjectReference).
  231. When these are read back in, their object is not guaranteed to be
  232. available until the `-awake' method is called in the object that
  233. requests that object.  To objc_read_object you must pass a pointer to
  234. an id, which is valid after exit from the function calling it (like
  235. e.g. an instance variable).  In general, you should not use objects
  236. read in until the -awake method is called.
  237.  
  238. Acknowledgements
  239. ================
  240.  
  241.    The GNU Objective C team: Geoffrey Knauth <gsk@marble.com> (manager),
  242. Tom Wood <wood@next.com> (compiler) and Kresten Krab Thorup
  243. <krab@iesd.auc.dk> (runtime) would like to thank a some people for
  244. participating in the development of the present GNU Objective C.
  245.  
  246.    Paul Burchard <burchard@geom.umn.edu> and Andrew McCallum
  247. <mccallum@cs.rochester.edu> has been very helpful debugging the
  248. runtime.   Eric Herring <herring@iesd.auc.dk> has been very helpful
  249. cleaning up after the documentation-copyright disaster and is now
  250. helping with the new documentation.
  251.  
  252.    Steve Naroff <snaroff@next.com> and Richard Stallman
  253. <rms@gnu.ai.mit.edu> has been very helpful with implementation details
  254. in the compiler.
  255.  
  256. Prerelease Archive
  257. ==================
  258.  
  259.    Intermediate releases, bugfixes and additional other information of
  260. the GNU Objective C will be available from iesd.auc.dk in the directory
  261. /pub/ObjC.
  262.  
  263. Bug Reports
  264. ===========
  265.  
  266.    Please read the section `Submitting Bugreports' of the gcc manual
  267. before you submit any bugs.
  268.  
  269. The future
  270. **********
  271.  
  272.    The future could depend on *you*. I am constantly working at
  273. ObjectiveAmiga, but I do have other projects, too. Besides that there
  274. are so many parts of ObjectiveAmiga which need to be completed that I
  275. simply cannot do everything at once. If you want to help me with the
  276. development of ObjectiveAmiga, feel free to contact me.
  277.  
  278.    Of course I can't offer you anything for your work. I'm not getting
  279. anything either ;)
  280.  
  281. Getting in touch
  282. ****************
  283.  
  284.    If you want to contact me, send EMail to
  285. s.zeiger@laren.rhein-main.de.
  286.  
  287. Bibliography
  288. ************
  289.  
  290.      [1] NeXT Computers, Inc.:
  291.          NeXTSTEP Object-Oriented Programming and the Objective C Language
  292.          Release 3
  293.          Addison-Wesley 1993
  294.      
  295.      [2] NeXT Computers, Inc.:
  296.          NeXTSTEP General Reference, Volume 1
  297.          Release 3
  298.          Addison-Wesley 1992
  299.      
  300.      [3] Brad J. Cox, Andrew J. Novobilski:
  301.          Object-Oriented Programming - An Evolutionary Approach
  302.          Second Edition
  303.          Addison-Wesley 1991
  304.  
  305.